package ua.in.iticket.addressbook.storage;

import ua.in.iticket.addressbook.person.Person;

import java.util.List;

/**
 * Created by ivanov-av
 * 12.02.14 8:42.
 */
public interface Storage {
    /**
     * Добавляет person в "хранилище"
     *
     * Обязательно вызывать commit() для сохранения данных
     *
     * @param person
     */
    public void save(Person person);

    /**
     * Удаляет person из "хранилища"
     *
     * Обязательно вызывать commit() для сохранения данных
     *
     * @param person
     * @return true, если person был  успешно удален
     */
    public boolean delete(Person person);

    /**
     * Возвращает в виде списка все содержимое "хранилища"
     *
     * @return список
     */
    public List<Person> getAll();

    /**
     * Возвращает в виде списка только те объекты, в имени которых есть подстрока name
     * @param name - искомая подстрока
     * @return - список найденных объектов
     */
    public List<Person> getByName(String name);

    /**
     * Выполняет сохранение данных.
     */
    public void commit();
}
